import { IsNumber, IsString, IsOptional, MinLength, MaxLength, IsBoolean } from 'class-validator';
import mongoose from 'mongoose';

export class CreateRoleDto {
    @IsString({ message: '角色名称必须是字符串' })
    @MinLength(2, { message: '角色名称长度不能小于2个字符' })
    @MaxLength(50, { message: '角色名称不能超过50个字符' })
    name!: string;

    @IsString({ message: '角色代码必须是字符串' })
    @MinLength(2, { message: '角色代码长度不能小于2个字符' })
    @MaxLength(50, { message: '角色代码不能超过50个字符' })
    code!: string;

    @IsString({ message: '角色描述必须是字符串' })
    @MinLength(2, { message: '角色描述长度不能小于2个字符' })
    @MaxLength(200, { message: '角色描述不能超过200个字符' })
    description!: string;

    @IsString({ message: '角色类型必须是字符串' })
    @MinLength(2, { message: '角色类型长度不能小于2个字符' })
    @MaxLength(50, { message: '角色类型不能超过50个字符' })
    type!: mongoose.Schema.Types.ObjectId;

    @IsNumber({}, { message: '角色排序必须是数字' })
    sort!: number;

    @IsBoolean({ message: '角色是否激活必须是布尔值' })
    isActive!: boolean;

    @IsString({ message: '角色租户ID必须是字符串' })
    tenantId!: mongoose.Schema.Types.ObjectId;


    @IsOptional()
    @IsString({ message: '创建人必须是字符串' })
    createdBy!: mongoose.Schema.Types.ObjectId;

}
export class UpdateRoleDto {
    @IsString({ message: '角色名称必须是字符串' })
    @MinLength(2, { message: '角色名称长度不能小于2个字符' })
    @MaxLength(50, { message: '角色名称不能超过50个字符' })
    name!: string;

    @IsString({ message: '角色代码必须是字符串' })
    @MinLength(2, { message: '角色代码长度不能小于2个字符' })
    @MaxLength(50, { message: '角色代码不能超过50个字符' })
    code!: string;

    @IsString({ message: '角色描述必须是字符串' })
    @MinLength(2, { message: '角色描述长度不能小于2个字符' })
    @MaxLength(200, { message: '角色描述不能超过200个字符' })
    description!: string;

    @IsString({ message: '角色类型必须是字符串' })
    @MinLength(2, { message: '角色类型长度不能小于2个字符' })
    @MaxLength(50, { message: '角色类型不能超过50个字符' })
    type!: mongoose.Schema.Types.ObjectId;

    @IsNumber({}, { message: '角色排序必须是数字' })
    sort!: number;

    @IsBoolean({ message: '角色是否激活必须是布尔值' })
    isActive!: boolean;

    @IsString({ message: '角色租户ID必须是字符串' })
    tenantId!: mongoose.Schema.Types.ObjectId;

    @IsOptional()
    @IsString({ message: '更新人必须是字符串' })
    updatedBy!: mongoose.Schema.Types.ObjectId;


}